GolfTV: Inputstream-Hilfe

  • Hallo zusammen,

    ich bin gerade dabei ein Addon für GolfTV zu schreiben. Leider bin ich noch relativ unerfahren und brauche nun eure Hilfe.

    Und zwar gibt es auf golf.tv folgende xml-File, wo die .ism-Adressen der STreams angezeigt werden.
    https://www.golf.tv/divauni/DGOLF/…48d86fcc1ef.xml

    Dies kann ich auch problemlos auslesen und folgende Stream-URL zu erhalten:
    https://dvr-i-main-dgolf-ott-prd.akamaized.net/dvr/fb61d6f9-d…r=html5-fullres)

    Ich müsste nun nur noch kodi dazu bringen, dies mittels dem Inputstream-Addon zu öffnen. Nur leider scheidere ich da, dies Kodi beizubringen. Hat jemand ein gutes Tutorial, wie es funktioniert?

    Danke

  • Ich müsste nun nur noch kodi dazu bringen, dies mittels dem Inputstream-Addon zu öffnen. Nur leider scheidere ich da, dies Kodi beizubringen. Hat jemand ein gutes Tutorial, wie es funktioniert?

    Ohne den Inhalt zu sehen, solltest du eine der 4 URL's (wahrscheinlich die connected (??) durch Setzen der listItem properties an kodi senden können.
    inputstream.adaptive.manifest_type ist hier wohl ism (Smoothstreaming), kann aber auch hls sein, am besten mal den Inhalt einer der internen URL's hier posten.

    Im wiki steht auch ein bisschen was drin:

    https://github.com/peak3d/inputst…-a-python-addon

  • Danke für die Hilfe

    Leider komme ich immer es noch nicht wirklich hin: Auch finde ich keine URL, die ich im VLC-Player abspielen könnte. Wie finde ich heraus, ob DRM vorhanden ist?

    Das ist scheinbar die Stream-Adresse, die aber im VLC nicht will:
    https://dvr-i-main-dgolf-ott-prd.akamaized.net/dvr/fb61d6f9-d…ormat=m3u8-aapl)

    Achja. wenn man sich bei golf.tv registriert sind eine Videos kostenlos abrufbar. Exakt bei denen Probier mich mich grad aus.

  • Code
    https://dvr-i-main-dgolf-ott-prd.akamaized.net/dvr/fb61d6f9-da81-47fb-8f00-67c13dff714f/fb61d6f9-da81-47fb-8f00-67c13dff714f.ism/manifest(format=m3u8-aapl,filter=connected-tv-fullres)

    Diese URL sollte es sein, wie gesagt, lad di doch mal mit curl oder wget runter, und poste den Inhalt.

  • Wenn ich die URL direkt mit Wget in der Konsolo aufrufen will kommt Access denied. Das beitet mir Firefox als Antwort an:

  • Gut, also was du machen musst ist:

    - schauen welche Parameter du benötigst, damit die URL abgerufen werden kann (GET / HEAD Parameter)
    - dann diese Werte + o.g. URL mithilfe der listitem properties an kodi übergeben (siehe o.g. wiki)

    Wenn du das hast, wird der stream wahrscheinlich sofort funktionieren.

  • Das ist die komplette URL mit den Parameter:

    Code
    https://dvr-i-main-dgolf-ott-prd.akamaized.net/dvr/a4747457-6630-4bc4-80ee-f268a4bedcd0/a4747457-6630-4bc4-80ee-f268a4bedcd0.ism/manifest(format=m3u8-aapl,filter=html5-fullres)?hdnea=st=1549733608~exp=1549733633~acl=/*~hmac=6a4b2f53dfa5920e1d087302360716674c90dfd7e67fb1cf81f1f55ff689f906&hdcore=2.11.3


    Nur leider bekomme ich diese weiterhin (weder) in Kodi (noch im VLC) zu laufen.

    listitem = xbmcgui.ListItem(name, path=url)
    listitem.setProperty('inputstreamaddon', 'inputstream.adaptive')
    listitem.setProperty('inputstream.adaptive.manifest_type', 'ism')
    xbmcplugin.addDirectoryItem(handle=addon_handle, url=url,
    listitem=listitem)

    ich probiere grad verschiedene Einstellungen aus nur nichts läuft. im Log steht folgendes:

    Code
    18:34:36.431 T:3084   ERROR: EXCEPTION: XBMC is not playing any file
    18:34:36.431 T:11236   DEBUG: CGUIWindowVideoBase::OnPlayMedia https://dvr-i-main-dgolf-ott-prd.akamaized.net/dvr/a4747457-6630-4bc4-80ee-f268a4bedcd0/a4747457-6630-4bc4-80ee-f268a4bedcd0.ism/manifest(format=m3u8-aapl,filter=html5-fullres)?hdnea=st=1549731520~exp=1549731545~acl=/*~hmac=49844987e0cadaa28cb9becc5b52c14296c542ab25fb2dda198406f7dae50673&hdcore=2.11.3
    18:34:36.431 T:11236 WARNING: Playlist Player: ListItem type must be audio or video, use ListItem::setInfo to specify!


    Falls jemand einen Tipp hat bitte melden. Ich probier aber parallel weiter

  • Habe nun folgende logfile, nachdem ich "listitem.setInfo('video', '')" eingebaut habe.

    Code
    18:53:41.443 T:8600   ERROR: CCurlFile::FillBuffer - Failed: HTTP returned error 403
    18:53:41.443 T:8600   ERROR: CCurlFile::Open failed with code 403 for https://dvr-i-main-dgolf-ott-prd.akamaized.net/dvr/a4747457-6630-4bc4-80ee-f268a4bedcd0/a4747457-6630-4bc4-80ee-f268a4bedcd0.ism/manifest(format=m3u8-aapl,filter=html5-fullres)?hdnea=st=1549733608~exp=1549733633~acl=/*~hmac=6a4b2f53dfa5920e1d087302360716674c90dfd7e67fb1cf81f1f55ff689f906&hdcore=2.11.3|acceptencoding=gzip&seekable=0
    18:53:41.443 T:8600   ERROR: AddOnLog: InputStream Adaptive: Cannot download https://dvr-i-main-dgolf-ott-prd.akamaized.net/dvr/a4747457-6630-4bc4-80ee-f268a4bedcd0/a4747457-6630-4bc4-80ee-f268a4bedcd0.ism/manifest(format=m3u8-aapl,filter=html5-fullres)?hdnea=st=1549733608~exp=1549733633~acl=/*~hmac=6a4b2f53dfa5920e1d087302360716674c90dfd7e67fb1cf81f1f55ff689f906&hdcore=2.11.3
    18:53:41.444 T:8600   ERROR: AddOnLog: InputStream Adaptive: Could not open / parse mpdURL (https://dvr-i-main-dgolf-ott-prd.akamaized.net/dvr/a4747457-6630-4bc4-80ee-f268a4bedcd0/a4747457-6630-4bc4-80ee-f268a4bedcd0.ism/manifest(format=m3u8-aapl,filter=html5-fullres)?hdnea=st=1549733608~exp=1549733633~acl=/*~hmac=6a4b2f53dfa5920e1d087302360716674c90dfd7e67fb1cf81f1f55ff689f906&hdcore=2.11.3)
    18:53:41.444 T:8600   DEBUG: AddOnLog: InputStream Adaptive: Session::~Session()
    18:53:41.445 T:8600   ERROR: CVideoPlayer::OpenInputStream - error opening [https://dvr-i-main-dgolf-ott-prd.akamaized.net/dvr/a4747457-6630-4bc4-80ee-f268a4bedcd0/a4747457-6630-4bc4-80ee-f268a4bedcd0.ism/manifest(format=m3u8-aapl,filter=html5-fullres)?hdnea=st=1549733608~exp=1549733633~acl=/*~hmac=6a4b2f53dfa5920e1d087302360716674c90dfd7e67fb1cf81f1f55ff689f906&hdcore=2.11.3]
    18:53:41.445 T:8600  NOTICE: CVideoPlayer::OnExit()

    EDIt:
    Interessant ist, dass ich in Firefox die Datei noch runterladen kann wenn ich die URL eingebe und in Chrome kommt, dass die Seite nicht verfügbar ist. Hhm

    EDIT2:
    Ich geh im Moment davon aus, dass ich erst den Login implementieren muss. Daher werde ich erstmal da weiterarbeiten. Ich hoffe wenn ich mich einloggen kann wird das Video laden.

  • Hallo,
    ich hatte leider die letzten Wochen beruflich etwas Stress. Ich hänge im Moment beim login (bzw. vor 2 Monaten hing ich dort). Hab grad eben wieder 1 Stunde investiert und wenn es gut läuft hab ich nun herausgefunden, wie der Access-Token erzeugt wird und weiterbenutzt wird. Ich hoffe, dass ich das ggf. am Wochenende/nächste Woche einbauen kann und so schonmal eine erste Version online stellen kann. Will aber nichts versprechen

  • Wohl nicht die beste Lösung aber es klappt:

    Code
    requests2 = requests.get(url='https://www.golf.tv/divauni/DGOLF/fe//video/videodata/'+args['videoid'][0]+'.xml')
    
    
        root = etree.ElementTree(etree.fromstring(requests2.text))
    
    
        for uri in root.iter('videoSource'):
            if streamURL = "":
                streamURL = uri[1].text
  • Die StreamURL kann ich nun ermitteln. Nun kommt aber leider folgende Fehlermeldung:

    Code
    EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
                                                 - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
                                                Error Type: <type 'exceptions.TypeError'>
                                                Error Contents: 'instancemethod' object has no attribute '__getitem__'
                                                Traceback (most recent call last):
                                                  File "C:\Users\xxx\AppData\Roaming\Kodi\addons\plugin.video.golftv\default.py", line 156, in <module>
                                                    listitem = xbmcgui.ListItem(path=stremURL_response['ContentUrl'])
                                                TypeError: 'instancemethod' object has no attribute '__getitem__'
                                                -->End of Python script error report<--
    Code
    listitem = xbmcgui.ListItem(path=stremURL_response['ContentUrl'])
        listitem.setInfo('video', '')
        listitem.setProperty('inputstreamaddon', 'inputstream.adaptive')
        listitem.setProperty('inputstream.adaptive.manifest_type', 'mpd')
        xbmcplugin.setResolvedUrl(_addon_handler, True, listitem)

    Folgendes bekomme ich und die ContentURL (die xxx hab ich eingefügt) gebe ich weiter zu Inputstream:

    Code
    {"Response":"OK","ResponseCode":1,"Message":"","Action":"","ContentUrl":"https://dvr-i-main-dgolf-ott-prd.akamaized.net/dvr/081cc966-0b69-4269-88e0-6fc21db37c5c/081cc966-0b69-4269-88e0-6fc21db37c5c.ism/manifest(format=m3u8-aapl,filter=html5-fullres)?hdnea=st=xxx~exp=xxx~acl=/*~hmac=xxx&hdcore=2.11.3","HeartBeatTime":0,"Signature":"xxx","ActionParameters":""}
  • Wohl nicht die beste Lösung aber es klappt:

    Code
    requests2 = requests.get(url='https://www.golf.tv/divauni/DGOLF/fe//video/videodata/'+args['videoid'][0]+'.xml')
    
    
        root = etree.ElementTree(etree.fromstring(requests2.text))
    
    
        for uri in root.iter('videoSource'):
            if streamURL = "":
                streamURL = uri[1].text

    Ich bin ein alsoluter Laie auf dem Gebiet, aber folgendes ist mir aufgefallen:
    In der ersten Zeile gibt ein in der Adresse 2 x einen "//": "https://www. ... fe//video ..."
    Ist das korrekt?

  • @maxmaxmax wie ich das lese ist stremURL_response kein dict und du kannst nicht mit [] darauf zugreifen.
    mach doch mal ein print stremURL_response an die Stelle ind schaue, was das für ein objekttyp ist.

    Wenn es ein string ist, der JSON enthält, must du das vorher noch vom JSON parser parsen lassen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!